<?php
class Groupe extends Model {
	
	private static $table_name = 'GROUPE';
	
	public function getGroupeId() { return $this->values['IDGROUPE']; }
	public function getUserId() { return $this->values['IDELEVE']; }
	public function getNomGroupe() { return $this->values['NOMGROUPE']; }

	public function __construct($data) {
		parent::__construct();
		$this->values = $data;
	}
	// Recuperer un groupe
	public static function getGroupe($id) {
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("SELECT * FROM ".self::$table_name." WHERE IDGROUPE=:id");
		$requete->execute(array('id' => $id));
		$tab = $requete->fetch(PDO::FETCH_BOTH);
		return new Groupe($tab);
	}
	// Creer un groupe. A tester le mysql_insert_id() toussa ...
	public static function createGroupe($ideleve,$nom,$idmembres){
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	INSERT INTO GROUPE(IDELEVE,NOMGROUPE)
											VALUES(:ideleve,:nom)
										");
		$requete->execute(array('ideleve'=>$ideleve,'nom'=>$nom));
		$UID = $dbConnection->lastInsertId(); 
		$requete2=$dbConnection->prepare("	INSERT INTO APPARTIENT_A(IDGROUPE,IDELEVE)
												VALUES(:idgroupe,:ideleve)
										");
		foreach($idmembres as $idmembre){
			
			$requete2->execute(array('idgroupe'=>$UID,'ideleve'=>$idmembre));
		}
		$requete2->execute(array('idgroupe'=>$UID,'ideleve'=>$ideleve));
	}
	
	public static function getGroupesofUser($id){
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	SELECT *
											FROM APPARTIENT_A
											LEFT JOIN GROUPE ON APPARTIENT_A.IDGROUPE = GROUPE.IDGROUPE
											WHERE APPARTIENT_A.IDELEVE = :id
										");
		$requete->execute(array('id'=>$id));
		$i=0;
		$data = array();
		while($tab = $requete->fetch(PDO::FETCH_BOTH)) {
			$data[$i]= new Groupe($tab);
			$i++;
		}
		return $data;
	}
	
	public static function getAllGroupes() {
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	SELECT *
											FROM GROUPE
										");
		$requete->execute();
		$i=0;
		$data = array();
		while($tab = $requete->fetch(PDO::FETCH_BOTH)) {
			$data[$i]= new Groupe($tab);
			$i++;
		}
		return $data;
	}
	
	// Ajouter un membre à un groupe.
	public function ajouterMembre($ideleve){
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	INSERT IGNORE INTO APPARTIENT_A
											SET IDELEVE=:ideleve,
											IDGROUPE=:idgroupe
										");
		$requete->execute(array('ideleve'=>$ideleve,'idgroupe'=>$this->getGroupeId()));
	}
	// Supprimer un ou des membres.
	public function supprimerMembres($idmembre){
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	DELETE FROM APPARTIENT_A
											WHERE IDELEVE = :ideleve AND IDGROUPE = :idgroupe
										");
		$requete->execute(array('ideleve'=>$idmembre,'idgroupe'=>$this->getGroupeId()));
	}
	// Récupérer les membres d'un groupe
	public function getMembresGroupe(){
		$dbConnection = PDOConnection::getInstance();
		$requete=$dbConnection->prepare("	SELECT IDELEVE
											FROM APPARTIENT_A
											WHERE IDGROUPE = :id
										");
		$requete->execute(array('id'=>$this->getGroupeId()));
		$i=0;
		$data = array();
		while($tab = $requete->fetch(PDO::FETCH_BOTH)) {
			$data[$i]= User::getUserInfos($tab['IDELEVE']);
			$i++;
		}
		return $data;
	}
	
}